<script>
	/*
1. const与let
2. 解构赋值
1. 字符串的扩展
2. 数值的扩展
3. 函数的扩展
4. 数组的扩展
5. 对象的扩展
6. 类语法
7. 模块化语法
8. 异步语法
9. 新容器语法
10. 代理(Proxy)与反射(Reflect)语法 */
	// 数组的扩展

	/* 

- 扩展运算符
- 面试题:请解释下深拷贝和浅拷贝
- 如果本次拷贝,最终导致堆内存中开辟了新的内存空间,那么就说明本次是深拷贝
- 浅拷贝数组: const arr2 = [...arr]***
- 合并多个数组: *const arr3 =  [...arr1, ...arr2]*

- 静态方法

- 伪数组(类数组对象)
	- 代表对象:arguments
	- 使用下标存储数据
	- 具有length属性
	- 他不能使用数组的方法

- Array.from():  将类数组对象和可遍历对象转为真数组
	- Array.from(new Set(arr))
	- [...new Set(arr)]
	- Array.of(1, 2, 3): 将一组值，转换为数组
- 实例方法
	- find() / findIndex(): 查找匹配的元素或下标
	- arr.flat(): 将多维数组转为一维数组(也称为: 数组扁平化)
*/

	// 对象的扩展
	/*

- `扩展运算符`

浅拷贝对象: const obj2 = {...obj1}
- 合并多个对象: const obj3 =  {...obj1, ...obj2}

- 属性/方法的简洁写法:  {name, getName () {}}

- 遍历内部属性
	- for..of: 遍历对象及其原型链上所有属性
	- Object.keys(obj): 得到对象自身可遍历的所有属性名的数组
  
- 静态方法:
	- Object.is(value1, value2): 判断2个值是否完全一样,
			注意：Object.is(NaN, NaN)为true
	- Object.assign(target, ...sources): 将后面任意多个对象合并到target对象上
			把后面设置为初始值，恢复初始值可使用
	*/
</script>
